/*

This file is part of Ext JS 4

Copyright (c) 2011 Sencha Inc

Contact:  http://www.sencha.com/contact

GNU General Public License Usage
This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file.  Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html.

If you are unsure which license is appropriate for your use, please contact the sales department at http://www.sencha.com/contact.

*/
Ext.require([
    'Ext.grid.*',
    'Ext.data.*',
    'Ext.util.*',
    'Ext.state.*',
	'Ext.window.MessageBox',
    'Ext.tip.*',
	'Ext.window.*'
]);

Ext.onReady(function() {
    Ext.QuickTips.init();
    
    // setup the state provider, all state information will be saved to a cookie
    Ext.state.Manager.setProvider(Ext.create('Ext.state.CookieProvider'));

	// create the Grid
    var grid = Ext.create('Ext.grid.Panel', {
        store: DataStore,
        stateful: true,
        stateId: 'stateGrid',
        columns: [
            {
                text     : 'Nombre',
				width    : 150,
                sortable : false,
                dataIndex: 'nombre'
            },{
                text     : 'Id_servicio',
				width    : 80,
                sortable : false,
                dataIndex: 'Id_servicio',
				hidden: true
            },{
                text     : 'Fecha Inicial',
				width    : 80,
                sortable : false,
                dataIndex: 'fecha_i'
            },{
                text     : 'Fecha Final',
				width    : 80,
                sortable : false,
                dataIndex: 'fecha_f'
            },{
                text     : 'cns_descuentos',
				width    : 80,
                sortable : false,
                dataIndex: 'cns_descuentos',
				hidden: true
            },{
                text     : 'Descuento',
				width    : 80,
                sortable : false,
                dataIndex: 'descuento'
            },{
				xtype: 'actioncolumn',
				width: 25,
				items: [{
					icon: '../../imagenes/delete.gif',
					tooltip: 'Eliminar',
					handler: function(grid, rowIndex, colIndex) {
						var rec = grid.getStore().getAt(rowIndex);
						deleteRegistro(rec);
					}                
				}]
			}
        ],
		anchor:'100%',
		height:'100%',
		tbar: [
			{
				text: 'Guardar',
				tooltip: 'Guardar nuevo descuento',
				icon: '../../imagenes/add.png',
				handler: crearNuevoRegistro
			}
		],
        title: 'Descuentos',
        viewConfig: {
            stripeRows: true
        }
    });
	
	function crearNuevoRegistro()
	{		
		  	if(isFormValid())
			{				
					Ext.Ajax.request({
									waitMsg: 'Espere...',
									url: 'db_categoria.php',
									params: {
												task: "CREATE",
												Id_servicio: 		var_id_equipo,
												fecha_i: 	txt_fecha1.getRawValue(),
												fecha_f: 	txt_fecha2.getRawValue(),
												precio:	txt_numeroserie.getValue(),
												descuento:	txt_descuento.getValue()
											}, 
										success: function(response)
										{
											var result=eval(response.responseText);
											switch(result)
											{
												case 1:
														Ext.MessageBox.alert('Registro OK','Se creo el Descuento');
														limpiarpantalla();
														break;
												case 2:
														Ext.MessageBox.alert('Error','Las fechas del descuento se traslapan con otro descuento');
														limpiarpantalla();
														break;
												default:
														Ext.MessageBox.alert('Error','No se creo el descuento... Error en la BD');
														break;									 
											}
										},
									failure: function(response)
									{			  
										var result=response.responseText;
										Ext.MessageBox.alert('Error','No se pudo conectar a la base de datos. Intenta nuevamente');
									}
					});				
			}
			else
			{
				Ext.MessageBox.alert('Error','Error en los datos');
			}
	}
	
	
	function deleteRegistro(rec)
	{		
		var cns= parseInt(rec.get('cns_descuentos'));//Id_servicio
		var servicio= parseInt(rec.get('Id_servicio'));//Id_servicio
		Ext.Ajax.request({
						waitMsg: 'Espere...',
						url: 'db_categoria.php',
						params: {
									task: "DELETE",
									cns:			cns,
									servicio:	servicio
								}, 
							success: function(response)
							{
								var result=eval(response.responseText);
								switch(result)
								{
									case 1:
											Ext.MessageBox.alert('DELETE OK','Se elimino el Descuento del servicio: '+servicio);
											limpiarpantalla();
											break;
									default:
											Ext.MessageBox.alert('Error','No se tiene acceso... Error en la BD');
											break;									 
								}
							},
						failure: function(response)
						{			  
							var result=response.responseText;
							Ext.MessageBox.alert('Error','No se pudo conectar a la base de datos. Intenta nuevamente');
						}
		});
	}
	
	
	function isFormValid()
	{
		return(	txt_nombre.isValid() && 
				txt_fecha1.isValid()  && 
				txt_fecha2.isValid() && 
				txt_descripcion.isValid()  && 
				txt_numeroserie.isValid() && 
				txt_descuento.isValid());
				
	}
	
	function limpiarpantalla()
	{
		txt_nombre.setValue("");
		txt_descripcion.setValue("");
		txt_fecha1.setValue("");
		txt_numeroserie.setValue("");
		txt_fecha2.setValue("");
		txt_descuento.setValue("");
		var_id_equipo=-1;
		DataStore.load({params: {start: 0, limit: 10}});
		DataStore_Servicio.load({params: {start: 0, limit: 10}});
	}
	
	
	formulariomensaje = new Ext.Panel({
		labelWidth:150,
		frame:true,
		autoWidth:true,
		renderTo: 'grid-example',
		buttonAlign:'right',
		labelAlign:'right',
		layout:'anchor',		
		items: [{
					width: 550,
					items:[
							{layout:'anchor',frame:true,
								items:[	ListingEditorGrid_Servicio,
										txt_nombre,
										txt_descripcion,
										txt_numeroserie,
										txt_fecha1,
										txt_fecha2,
										txt_descuento
								]},
					]
				},{
					layout:'fit',
					height: 200,
					width: 550,
					items:[grid]
				}]
	});
});

